#coding: utf-8

from pylab import *
import sys





ion()


figure(1, figsize=(10,10))

suptitle(u'Calibração baseada no Corisco - Função objetivo variando com a distância focal')

fref = 847.667796003

qq = np.load('focal/foc-n8.npz')
ff = qq['dist_focal']
err = qq['func_obj'].sum(1)

err = err-err.min(0)

subplot(2,2,1)
title(u'N8 - todas imagens')
plot(ff, err, 'b-+')
grid()

ylabel(u'Função objetivo (transladada)')
xlabel(u'Distância focal')

l1=plot([fref, fref], [-err.max(), err.max()],'r--')[0]
l2=plot(ff[err==err.min()], [err.min()], 'bd', ms=10)[0]

figlegend((l1,l2), (u'Referência (Bundler)', u'Estimado (Corisco)'),
       loc='lower center', ncol=2, numpoints=1)

xlim(600, 1200)
ylim(-200, 2000)






err = qq['func_obj']
Nc = err.shape[1]


for k in range(Nc):
    err[:,k] -= err[:,k].min()

subplot(2,2,3)
plot(ff, err, 'b-', alpha=0.5)
grid()

title(u'N8 - imagens individuais')
ylabel(u'Função objetivo (transladada)')
xlabel(u'Distância focal')

l1=plot([fref, fref], [-err.max(), err.max()],'r--')[0]
mm = []
for k in err.T:
    mm.append( nonzero(k==k.min())[0][0] )
l2=plot(ff[mm], err.shape[1]*[0], 'bd', ms=10)[0]

figlegend((l1,l2), (u'Referência (Bundler)', u'Estimado (Corisco)'),
       loc='lower center', ncol=2, numpoints=1)

xlim(600, 1200)
ylim(-10, 160)

print 'f mean:', mean(ff[mm])
print 'std Erro:', std(ff[mm] - fref)




fref = 788.854413422

qq = np.load('focal/foc-sony.npz')
ff = qq['dist_focal']
err = qq['func_obj'].sum(1)

err = err-err.min()

subplot(2,2,2)
plot(ff, err, 'b-+')
grid()

title(u'a230 - todas imagens')
ylabel(u'Função objetivo (transladada)')
xlabel(u'Distância focal')

l1=plot([fref, fref], [-err.max(), err.max()],'r--')[0]
l2=plot(ff[err==err.min()], [err.min()], 'bd', ms=10)[0]

figlegend((l1,l2), (u'Referência (Bundler)', u'Estimado (Corisco)'),
       loc='lower center', ncol=2, numpoints=1)

xlim(600, 1200)
ylim(-200, 2000)



err = qq['func_obj']

for k in range(Nc):
    err[:,k] -= err[:,k].min()

subplot(2,2,4)
plot(ff, err, 'b-', alpha=0.5)
grid()

title(u'a230 - imagens individuais')
ylabel(u'Função objetivo (transladada)')
xlabel(u'Distância focal')

l1=plot([fref, fref], [-err.max(), err.max()],'r--')[0]
mm = []
for k in err.T:
    mm.append( nonzero(k==k.min())[0][0] )
l2=plot(ff[mm], err.shape[1]*[0], 'bd', ms=10)[0]

figlegend((l1,l2), (u'Referência (Bundler)', u'Estimado (Corisco)'),
       loc='lower center', ncol=2, numpoints=1)

xlim(600, 1200)
ylim(-10, 160)

savefig('edgel_cali.pdf')

print 'f mean:', mean(ff[mm])
print 'std Erro:', std(ff[mm] - fref)
